home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 June / Macworld (1999-06).dmg / Shareware World / Info / For Developers / MacZoop2.0.sea / MacZoop2.0 / Required Classes / ZApplication.h < prev    next >
Text File  |  1999-02-24  |  5KB  |  212 lines

  1. /*************************************************************************************************
  2. *
  3. *
  4. *            MacZoop - "the framework for the rest of us"         
  5. *
  6. *
  7. *
  8. *            ZApplication.h            -- the application object
  9. *
  10. *
  11. *
  12. *
  13. *
  14. *            © 1996, Graham Cox
  15. *
  16. *
  17. *
  18. *
  19. *************************************************************************************************/
  20.  
  21.  
  22. #pragma once
  23.  
  24. #ifndef __ZAPPLICATION__
  25. #define    __ZAPPLICATION__
  26.  
  27. #ifndef __ZCOMMANDER__
  28. #include    "ZCommander.h"
  29. #endif
  30.  
  31. class    ZEventHandler;
  32. class    ZWindow;
  33. class    ZUndoTask;
  34. class    ZPrinter;
  35. class    ZMenuBar;
  36.  
  37. // for easier adoption of navigation services, the fileTypes handle now incorporates a
  38. // header such that it mimics an 'open' resource.
  39.  
  40. #if PRAGMA_ALIGN_SUPPORTED
  41. #pragma options align=mac68k
  42. #endif
  43.  
  44. typedef struct
  45. {
  46.     OSType    appSignature;
  47.     short    reserved;
  48.     short    osTypeCount;
  49.     OSType    osType[1];
  50. }
  51. FTypeList, *FTypeListPtr, **FTypeListHdl;
  52.  
  53. #if PRAGMA_ALIGN_SUPPORTED
  54. #pragma options align=reset
  55. #endif
  56.  
  57. // app class info:
  58.  
  59. DEFINECLASSID( ZApplication, 'zapp' );
  60.  
  61. // app class definition:
  62.  
  63. class    ZApplication : public ZCommander
  64. {
  65.     friend class ZEventHandler;
  66.     
  67. protected:
  68.  
  69.     Boolean            done;                // normally FALSE, if set TRUE, will try to quit
  70.     short            phase;                // current phase
  71.     short            appResRefNum;        // refnum of application resource file
  72.     ZEventHandler*    zEH;                // event handler object
  73.     Handle            shortageFund;        // to deal with tight memory, we can release this
  74.     FTypeListHdl    itsFileTypes;        // list of filetypes we can open
  75.     ZUndoTask*        curUndoTask;        // current undoable task
  76.     ZPrinter*        itsPrinter;            // printer object for handling print commands
  77.     Boolean            memIsShort;            // flag memory problem
  78.     Boolean            userHasSeenAlert;    // TRUE if user has been warned about the memory
  79.     Boolean            splashVisible;        // TRUE if start-up splash is displayed
  80.     short            msDepth;            // screen depth of main screen
  81.  
  82. public:    
  83.  
  84.     ZApplication();
  85.     virtual ~ZApplication();
  86.     
  87.     // initialisation and clean-up
  88.     
  89.     virtual void            InitMacZoop( const short numMasterBlocks = 8 );
  90.     virtual void            StartUp() {};
  91.     virtual void            ShutDown() {};
  92.     virtual void            ReadPrefs() {};
  93.     virtual void            ShowSplash() {};
  94.     virtual void            RunFirstTask() {};
  95.     
  96.     // event processing
  97.     
  98.     virtual void            Run();
  99.     virtual Boolean            Quit();
  100.     virtual void            RequestQuit();
  101.     virtual Boolean            MemoryShortage( const Size bytesShort );
  102.     virtual void            Process1Event();
  103.     virtual void            Process1Event( EventRecord* anExternalEvent );
  104.     virtual void            ProcessAllEvents();
  105.     virtual void            HandleCommand( const long aCmd );
  106.     virtual void            HandleCommand( const short menuID, const short itemID );
  107.     virtual void            UpdateMenus();
  108.     virtual Boolean            GetCurrentEvent( EventRecord* anEvent );
  109.     virtual void            HandleAppleEvent(    AEEventClass aeClass, AEEventID aeID,
  110.                                                 AppleEvent* aeEvt, AppleEvent* reply );
  111.                                             
  112.     virtual void            MouseNotInAnyWindow( const Point globalMouse );
  113.     virtual void            HandleMBarHiding( const Point globalPt );
  114.     virtual void            WaitApplicationForeground();
  115.     virtual void            ProcessHLEvent( const EventRecord& theEvent ) {};
  116.                                             
  117.     // status utilities
  118.     
  119.     virtual    short            GetClicks();
  120.     virtual    Boolean            InBackground();
  121.     virtual void            GetName( Str255 appName );
  122.         
  123.     virtual void            DoSuspend();
  124.     virtual void            DoResume();
  125.  
  126.     // error processing
  127.     
  128.     virtual void            HandleError( OSErr theErr );
  129.     
  130.     // window construction
  131.     
  132.     virtual ZWindow*        OpenNewWindowType( OSType aType = 0 );
  133.     virtual void            CloseAll( Boolean closeFloaters = FALSE );
  134.     virtual ZWindow*        GetFrontWindow();
  135.     virtual void            AboutBox();
  136.     virtual void            DoPreferences() {};
  137.     
  138.     // opening files
  139.     
  140.     virtual Boolean            PickFile( FSSpec* aFile, OSType* fType );
  141.     virtual ZWindow*        OpenFile( const FSSpec& aFile, const OSType fType, Boolean isStationery = FALSE );
  142.     
  143.     // extending the file types
  144.     
  145.     virtual void            AddFileType( const OSType aType );
  146.     virtual Boolean            CanOpenFileType( const OSType aType );
  147.     
  148.     // undo task handling
  149.     
  150.     virtual void            SetTask( ZUndoTask* aTask );
  151.     virtual void            UpdateUndo();
  152.     inline ZUndoTask*        GetUndoTask() { return curUndoTask; };
  153.     
  154.     // printer handling
  155.     
  156.     virtual void            MakePrinter();
  157.     virtual void            DoPageSetup();
  158.     virtual void            DoPrint();
  159.     inline    ZPrinter*        GetPrinter() { return itsPrinter; };
  160.     
  161.     // other inline accessors
  162.     
  163.     inline    short            GetPhase()                        { return phase;};
  164.     inline    FTypeListHdl    GetFileTypeList()                 { return itsFileTypes; };
  165.     inline    Boolean            MemoryCrisis()                     { return memIsShort; };
  166.     inline    Boolean            UserHasSeenMemoryCrisisAlert()     { return userHasSeenAlert; };
  167.     inline    ZEventHandler*    GetEventHandler()                 { return zEH; };
  168.     inline    short            GetAppRefnum()                     { return appResRefNum; };
  169.     
  170. protected:
  171.  
  172.     void                    InitMacApplication( const short numMasterBlocks );
  173.     virtual void            MakeHelpers();
  174.     virtual void            MakeClipboard();
  175.     virtual Boolean            CheckCanRun();
  176.     virtual void            InitMenuBar();
  177.     virtual void            CheckLowMemory();
  178.     virtual void            RegisterClasses();
  179.     
  180.     virtual ZWindow*        MakeNewWindowType( OSType aType = 0 );
  181. };
  182.  
  183. // possible values of "phase"
  184.  
  185. enum
  186. {
  187.     kInitialising,
  188.     kRunning,
  189.     kQuitting,
  190.     msgApplicationSuspending    = 'susp',
  191.     msgApplicationResuming        = 'rsum',
  192.     msgMainScreenDepthChanged    = 'msdx'
  193. };
  194.  
  195. enum
  196. {
  197.     kDefaultWindowType = 0
  198. };
  199.  
  200. #define        kUndoStrIndex                5
  201. #define        kRedoStrIndex                6
  202. #define        kCantUndoStrIndex            7        
  203.  
  204. #define        kCantRunAlertID                131
  205. #define        kFatalStartupErrAlertID        136
  206. #define        kModalDialogOnScreenErr        137
  207.  
  208. #define        kAEReopenApplication        'rapp'    // new MacOS 8 apple event
  209.  
  210.  
  211.  
  212. #endif